﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="IRulesCollection.cs" company="Scrum for Team System">
//   None
// </copyright>
// <summary>
//   Defines the IRulesCollection type.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace ScrumForTeamSystem.EventService.Infrastructure.Interfaces
{
    using System.Collections.Generic;

    /// <summary>
    /// Defines the IRulesCollection&lt;TRule&gt; interface.
    /// </summary>
    /// <typeparam name="TRule">The type of the rule.</typeparam>
    public interface IRulesCollection<TRule> : ICollection<TRule>
    {
        /// <summary>
        /// Gets the matching rules.
        /// </summary>
        /// <param name="workItemChangedEvent">The work item changed event.</param>
        /// <returns>A collection of rules that match the work item changed event.</returns>
        IEnumerable<TRule> GetMatchingRules(WorkItemChangedEvent workItemChangedEvent);
    }
}
